package com.xigua._查找;

/**
 * @author LiRongHua
 * @Title: ${file_name}
 * @Package ${package_name}
 * @Description: 给你一个仅由整数组成的有序数组，其中每个元素都会出现两次，唯有一个数只会出现一次。
 *请你找出并返回只出现一次的那个数。
 *你设计的解决方案必须满足 O(log n) 时间复杂度和 O(1) 空间复杂度。
 * @date 2022/2/149:31
 */
public class _540_有序数组中的单一元素 {

    public static void main(String[] args) {
        System.out.println(singleNonDuplicate(new int[]{3,3,7,7,10,11,11}));
    }

    public static int singleNonDuplicate(int[] nums) {

        int low = 0, high = nums.length - 1;
        while (low < high) {
            int mid = (high - low) / 2 + low;
            if (nums[mid] == nums[mid ^ 1]) {
                low = mid + 1;
            } else {
                high = mid;
            }
        }
        return nums[low];

    }

}
